package Threading2;

public class ThreadDemo7 {
    public static void main1(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            System.out.println("hello t");
        });
        t.start();

        t.join(); // 此时这个join的含义：main线程进行阻塞，等待 t 线程执行完成之后再执行main线程
        // 也就是在哪个线程中写 join 方法，就让哪一个线程进行等待
        System.out.println("hello main");

        //  还有一个版本的join，可以写一个参数作为 超市时间，等到了这个超时的时间，此时就不等了
    }

    // Java 中的线程的状态
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            while (true) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("hello t!!");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        System.out.println(t.getState()); // NEW 此时就是线程还没有创建出来呢，只是有一个 Thread 对象
        t.start();

        Thread.sleep(2000);
        System.out.println(t.getState()); // TERMINATED 系统中的线程已经执行完了，但是Thread对象还在

        System.out.println(t.getState()); // RUNNABLE  就绪状态，就绪状态有两种，1.正在CPU上运行， 2. 准备好随时可以去CPU上运行

        System.out.println(t.getState()); // TIME_WAITING 阻塞状态  指定时间等待 sleep方法


    }
}
